using System.Threading.Tasks;

namespace EntityKit.Runtime
{
    /// <summary>
    /// 加密提供者接口
    /// </summary>
    public interface IEncryptionProvider
    {
        /// <summary>
        /// 加密数据
        /// </summary>
        /// <param name="data">原始数据</param>
        /// <returns>加密后的数据</returns>
        string Encrypt(string data);

        /// <summary>
        /// 异步加密数据
        /// </summary>
        /// <param name="data">原始数据</param>
        /// <returns>加密后的数据</returns>
        Task<string> EncryptAsync(string data);

        /// <summary>
        /// 解密数据
        /// </summary>
        /// <param name="data">加密数据</param>
        /// <returns>解密后的数据</returns>
        string Decrypt(string data);

        /// <summary>
        /// 异步解密数据
        /// </summary>
        /// <param name="data">加密数据</param>
        /// <returns>解密后的数据</returns>
        Task<string> DecryptAsync(string data);
    }
}